home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1997 / HAM Radio 1997.iso / vcls / dragdrop / dragoutu.pas < prev   
Pascal/Delphi Source File  |  1996-04-08  |  3KB  |  83 lines

  1. {Demo - DragDrop App.  Created by Harvey Orloff Synchro-Graphix Software
  2.  if you have any comments or ways to improve this app.  please drop me
  3.  an e-mail CIS 70610,724.   This program is for demonstration purposes
  4.  only.}
  5.  
  6. { HLO - 8/1/95 DragDrop example with Outline control.  Allow the user to
  7.  Grab any level in the outline and drag and drop it to any other level}
  8.  
  9. unit Dragoutu;
  10.  
  11. interface
  12.  
  13. uses
  14.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  15.   Forms, Dialogs, StdCtrls, Grids, Outline;
  16.  
  17. type
  18.   TForm1 = class(TForm)
  19.     Outline1: TOutline;
  20.     procedure Outline1MouseDown(Sender: TObject; Button: TMouseButton;
  21.       Shift: TShiftState; X, Y: Integer);
  22.     procedure Outline1MouseMove(Sender: TObject; Shift: TShiftState; X,
  23.       Y: Integer);
  24.     procedure Outline1DragOver(Sender, Source: TObject; X, Y: Integer;
  25.       State: TDragState; var Accept: Boolean);
  26.     procedure Outline1DragDrop(Sender, Source: TObject; X, Y: Integer);
  27.     end;
  28.  
  29. var
  30.   Form1: TForm1;
  31.  
  32.   {Variable bucket to hold source row for Drag Drop}
  33.   DragSourceRow: Integer;
  34. implementation
  35.  
  36. {$R *.DFM}
  37.  
  38. procedure TForm1.Outline1MouseDown(Sender: TObject; Button: TMouseButton;
  39.   Shift: TShiftState; X, Y: Integer);
  40. begin
  41.   {Get the original row the user clicked on}
  42.   DragSourceRow := Outline1.GetItem(X, Y);
  43.  
  44. end;
  45.  
  46. procedure TForm1.Outline1MouseMove(Sender: TObject; Shift: TShiftState; X,
  47.   Y: Integer);
  48. begin
  49.  
  50.     {check if the left mouse button is down and if drag mode is off}
  51.     if (ssLeft in Shift) and (Outline1.Dragging = false) then
  52.      {Turn on the drag drop.  the false below allows the mouse to move
  53.       5 pixels in any direction before the cursor changes to a drag drop
  54.       style cursor}
  55.       Outline1.BeginDrag(false);
  56.  
  57. end;
  58.  
  59. procedure TForm1.Outline1DragOver(Sender, Source: TObject; X, Y: Integer;
  60.   State: TDragState; var Accept: Boolean);
  61. begin
  62.   {validate the user is dagging something and set drop acceptance for the
  63.    outline control}
  64.     if Outline1.Dragging then begin
  65.       Accept := True;
  66.  
  67.      {This line will highlight the outline item under the mouse pointer}
  68.      Outline1.SelectedItem := Outline1.GetItem(X, Y);
  69.  
  70.   end;
  71. end;
  72.  
  73. procedure TForm1.Outline1DragDrop(Sender, Source: TObject; X, Y: Integer);
  74. begin
  75.   {the user has ended the dragdrop operation move the source row to the
  76.    destination and insert it there.}
  77.     with Outline1.Items[DragSourceRow] do
  78.       MoveTo(Outline1.SelectedItem, oaInsert);
  79.  
  80. end;
  81.  
  82. end.
  83.